Computing architectures that operate efficiently and that can process large volumes of data quickly are often preferred over their counterparts. Additionally, it is often desired to operate a variety of tasks, using a variety of computer resources, simultaneously within a computer system. Accordingly, developing complex multiprocessor systems has been the subject of significant research.
One recent development is the advent of processor chips that contain multiple processors on a single chip. Each individual processor is known as a core. Each core on a silicon chip operates as an individual processor.
Additionally, the concept of threads has been developed in order to increase the efficiency of individual processors or processor cores. The term thread is used to define the number of execution strings that can be processed simultaneously within a processor or processor core. In a traditional core, instructions are executed sequentially, with the execution of one instruction completed before execution of a subsequent instruction begins. Often, however, a particular instruction may interact with various other components in the system (e.g., data must be read from a fixed drive, etc.). This can cause the core to reside in a waiting state for several clock cycles until the desired data is retrieved. By enabling a core to run more than one string of execution instructions simultaneously, the time lost waiting for actions such as data retrieval can be reduced. When one string of instructions, or thread, reaches a state where a wait cycle would occur, the core can switch to another thread and continues to process instructions. In this manner, core processing capabilities are increased.
Threads are beneficial in increasing the speed at which certain applications run on the core. Other applications, however, can theoretically be slowed by a core that runs multiple threads. Applications such as some database programs are designed to operate on multiple cores at the same time. These applications view each thread in a multi-thread core as another available core that can process a string of executable instruction. Because, however, a thread does not have the same processing capabilities as a complete core processor (i.e., a thread must share the core with one or more other threads), these applications are slowed by using multi-thread cores instead of employing additional cores. As a result, multiple threads can be undesirable for particular applications.
In systems that run applications where multiple threads are not advantageous, it is often desired to disable the multi-thread capability of a processor core. Core manufactures currently offer cores that can have their multi-thread capabilities disabled before shipping to the customer. This is usually done using a fuse within the chip. A voltage is used to “blow” the fuse to disable the multi-thread capability. This, however, is a permanent configuration. Once the multi-thread capability has been disabled in this manner, it cannot readily be enabled at a later time.
Because it is rarely possible to know which application will be run on a system at system installation time, and many systems will run numerous types of applications, system efficiency is reduced by choosing an enabled/disabled multi-thread state when a system is installed.